# 一、常量与表达式（基础运算）
# 基础算术运算（加减乘除）
print(1 + 2 - 3)  # 结果为0：1+2=3，3-3=0
print(1 + 2 * 3)  # 结果为7：先算乘法2*3=6，再加1得7
print(1 + 2 / 3)  # 结果约为1.666...：除法会得到浮点数

# 计算四个分数的平均数
print((67.5 + 89.0 + 12.9 + 32.2) / 4)  # 计算总和后除以数量4


# 二、变量的定义与使用
# 1. 计算四个分数的方差（使用变量存储中间结果）
avg = (67.5 + 89.0 + 12.9 + 32.2) / 4  # 先求平均值
# 计算每个数与平均值的平方和
total = (67.5 - avg)**2 + (89.0 - avg)** 2 + (12.9 - avg)**2 + (32.2 - avg)** 2
result = total / 3  # 方差公式（样本方差除以n-1）
print("方差结果：", result)

# 2. 变量的基本操作
a = 10  # 定义变量a并赋值10
print(a)  # 输出变量a的值（10）

a = 20  # 修改变量a的值为20
print(a)  # 输出修改后的值（20）

# 变量间赋值
a = 10
b = 20
a = b  # 将b的值赋给a
print(a)  # 此时a的值变为20
print(b)  # b的值仍为20


# 三、数据类型及类型查看
# 查看不同数据类型
a = 10
print(type(a))  # <class 'int'>：整数类型

a = 0.5
print(type(a))  # <class 'float'>：浮点数类型

a = 'hello'
print(type(a))  # <class 'str'>：字符串类型

a = True
b = False
print(type(a))  # <class 'bool'>：布尔类型（True）
print(type(b))  # <class 'bool'>：布尔类型（False）

# 字符串操作
a = 'hello'
print(len(a))  # 输出5：获取字符串长度

a = 'hello'
b = 'world'
print(a + b)  # 输出helloworld：字符串拼接

# Python动态类型特性（变量类型可动态变化）
a = 10
print(type(a))  # 初始为int类型
a = 'hello'
print(type(a))  # 后续变为str类型


# 四、注释的使用（解释代码功能）
# 这是单行注释：计算4个数字的方差（与前面示例功能相同）
avg = (67.5 + 89.0 + 12.9 + 32.2) / 4
total = (67.5 - avg)**2 + (89.0 - avg)** 2 + (12.9 - avg)**2 + (32.2 - avg)** 2
result = total / 3
print(result)

# 文档字符串（用于描述模块、函数或类的功能，可跨多行）
"""
这是文档字符串示例
可以写多行内容
通常用于说明代码功能
"""

'''
单引号形式的文档字符串
功能与双引号形式一致
'''


# 五、输入与输出
# 1. 输出操作
print('hello')  # 直接输出字符串

a = 10
b = True
print(a)  # 输出变量a的值（10）
print(b)  # 输出变量b的值（True）

# 使用f-string格式化输出（混合字符串和变量）
num = 10
print(f'num = {num}')  # 输出：num = 10

# 2. 输入操作
num = 0
num = input('请输入一个整数: ')  # 获取用户输入（返回字符串类型）
print(f'你输入的整数是 {num}')

# 输入后直接拼接（字符串拼接，非算术相加）
a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
print(f'a + b = {a + b}')  # 例如输入10和20，输出1020

# 输入后转换类型（实现算术运算）
a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
a = int(a)  # 转换为整数类型
b = int(b)
print(f'a + b = {a + b}')  # 例如输入10和20，输出30

# 输入四个小数求平均值
a = input('请输入第一个数字: ')
b = input('请输入第二个数字: ')
c = input('请输入第三个数字: ')
d = input('请输入第四个数字: ')
a = float(a)  # 转换为浮点数
b = float(b)
c = float(c)
d = float(d)
avg = (a + b + c + d) / 4
print(f'平均值: {avg}')


# 六、运算符
# 1. 算术运算符
# print(10 / 0)  # 错误：除数不能为0，会抛出ZeroDivisionError
print(1 / 2)  # 0.5：普通除法
print(7 % 2)  # 1：求余数（7除以2余1）
print(4 **2)  # 16：乘方（4的2次方）
print(4** 0.5)  # 2.0：开平方（4的平方根）
print(7 // 2)  # 3：取整除法（向下取整）
print(-7 // 2)  # -4：负数取整仍向下取整

# 2. 关系运算符（比较运算）
a = 10
b = 20
c = 30
print(a < b)  # True：a小于b
print(a == b)  # False：a不等于b
print(a != b)  # True：a不等于b

# 字符串比较（按ASCII码顺序）
a = 'hello'
b = 'world'
print(a < b)  # True：'h'的ASCII码小于'w'

# 浮点数比较（避免直接用==，因精度问题）
a = 0.1 + 0.2  # 实际结果约为0.30000000000000004
b = 0.3
print(-0.000001 < (a - b) < 0.000001)  # True：判断差值在极小范围内

# 3. 逻辑运算符
print(a < b and b < c)  # True：逻辑与（两边都为真则真）
print(a < b or b > c)   # True：逻辑或（至少一边为真则真）
print(not a < b)        # False：逻辑非（取反）

# 连续比较（等价于多个and连接）
print(a < b < c)  # True：等价于a < b and b < c

# 短路求值（后面的表达式不执行）
print(10 > 20 and 10 / 0 == 1)  # False：前面为假，后面不执行（避免报错）
print(10 < 20 or 10 / 0 == 1)   # True：前面为真，后面不执行

# 4. 赋值运算符
# 链式赋值
a = b = 10  # a和b都赋值为10

# 多元赋值
a, b = 10, 20  # a=10，b=20

# 交换变量值（无需中间变量）
a = 10
b = 20
a, b = b, a  # 交换后a=20，b=10

# 复合赋值运算符
a = 10
a += 1  # 等价于a = a + 1
print(a)  # 11

